20716
19022
Jeg har et datasæt som angivet nedenfor
Navn col1 col2
a 10,3 10,9
b 11 15
c 20 7.2
d 6.2 6.2
e 5.3 5.4
f 4.5 4.0
Jeg vil sammenligne col1 og col2 i min df, og jeg vil lave en anden kolonne, hvor jeg, mens jeg sammenligner col1- og col2-værdier, hvis værdien af ​​col2 stiger fra col1, så vil jeg indtaste stigning ved siden af ​​dem i min kolonne der, og hvis de er faldende, så vil jeg skrive faldende og ingen ændringer, hvis de er de samme
og jeg vil have min produktion som denne
navn col1 col2 col3
en stigning på 10,3 10,9
b 11 15 stigende
c 20 7.2 faldende
d 6.2 6.2 ingen ændring
e 5.3 5.4 stigende
f 4,5 4,0 faldende 
Med dplyr:
df%>%
mutere (Col3 = ifelse (col2 == col1,
"ingen ændring",
ifelse (col2> col1,
"stigende", "faldende")))
Eller ved hjælp af case_when som foreslået af @akrun:
df%>%
mutere (Col3 = case_when (col1 == col2 ~ "ingen ændring",
col2> col1 ~ "Stiger",
SAND ~ ~ faldende)))
Resultat:
navn col1 col2 Col3
1 a 10,3 10,9 stigende
2 b 11,0 15,0 stigende
3 c 20,0 7,2 faldende
4 d 6,2 6,2 ingen ændring
5 e 5.3 5.4 stigende
6 f 4,5 4,0 faldende
Data:
df <-struktur (liste (navn = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), klasse = "data.frame", række.names = c (NA,
-6L))
|
Vi kan trække col1 af col2 og derefter bruge tegn til at tildele værdier
df $ col3 <- c ("faldende", "ingen ændring", "stigende") [tegn (df $ col1 - df $ col2) + 2]
df
# navn col1 col2 col3
# 1 a 10.3 10.9 faldende
# 2 b 11,0 15,0 faldende
# 3 c 20.0 7.2 stigende
# 4 d 6.2 6.2 ingen ændring
# 5 e 5.3 5.4 faldende
# 6 f 4.5 4.0 stigende
Eller ved hjælp af dplyr kan vi bruge case_when
bibliotek (dplyr)
df%>%
mutere (col3 = case_when (col1 == col2 ~ "ingen ændring",
col1> col2 ~ "stigende",
SAND ~ "faldende"))
|
Basis R
df $ col3 <-med (df, ifelse (col1> col2, "faldende",
ifelse (col1